import json
import os
from jinja2 import Template

def generate_html_pages(json_data, output_dir="pages"):
    """
    解析JSON数据并生成HTML页面序列
    
    参数:
    json_data - 包含知识点数据的JSON字符串或字典
    output_dir - 输出目录路径
    """
    # 解析JSON数据
    if isinstance(json_data, str):
        data=json.loads(json_data)
    else:
        data = json_data
    
    pageList=[] #保存生成的页面地址

    # 确保输出目录存在
    os.makedirs(output_dir, exist_ok=True)
    
    # 加载HTML模板（修改后的代码）
    template_path = os.path.join(
        os.path.dirname(__file__), 
        '..', 
        'templates', 
        'base.html'
    )

    # 加载HTML模板
    with open(template_path, 'r', encoding='utf-8') as f:
        template = Template(f.read())
    
    # 为每个页面生成HTML
    pages = data["pages"]
    total_pages = len(pages)
    
    for i, page in enumerate(pages):
        # 确定下一页文件名（最后一页循环到首页）
        next_page = f"page_{(i+1) % total_pages}.html" if total_pages > 1 else "page_0.html"
        
        # 渲染模板
        html_content = template.render(
            title=page["title"],
            content=page["content"],
            animation_type=page["animation_type"],
            bg_color=page["bg_color"],
            text_color=page["text_color"],
            next_page=next_page,
            image_url=page["image_url"]
        )
        
        # 保存文件
        output_path = os.path.join(output_dir, f"page_{i}.html")
        pageList.append(output_path) # 保存页面地址
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(html_content)
    
    print(f"成功生成 {total_pages} 个知识点页面")
    return pageList # 返回页面地址列表，用于后续处理，如视频合成、音频合成等

